<!doctype html>
<html>

<head>
  <meta name="generator" content="JSDoc 3.6.11">
  <meta charset="utf-8">
  <title>whatsapp-web.js 1.26.1-alpha.3 &raquo; Source: webCache/LocalWebCache.js</title>
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Karla:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Noto+Serif:400,400i,700,700i" type="text/css">
  <link rel="stylesheet" href="https://brick.a.ssl.fastly.net/Inconsolata:500" type="text/css">
  <link href="css/baseline.css" rel="stylesheet">
</head>

<body onload="prettyPrint()">
  <nav id="jsdoc-navbar" role="navigation" class="jsdoc-navbar">
    <div id="jsdoc-navbar-container">
      <div id="jsdoc-navbar-content">
        <a href="index.html" class="jsdoc-navbar-package-name">whatsapp-web.<wbr>js 1.<wbr>26.<wbr>1-alpha.<wbr>3</a>
      </div>
    </div>
  </nav>
  <div id="jsdoc-body-container">
    <div id="jsdoc-content">
      <div id="jsdoc-content-container">
        <div id="jsdoc-banner" role="banner">
        </div>
        <div id="jsdoc-main" role="main">
          <header class="page-header">
            <h1>Source: webCache/LocalWebCache.js</h1>
          </header>
          <article>
            <pre class="prettyprint linenums"><code>const path &#x3D; require(&#x27;path&#x27;);
const fs &#x3D; require(&#x27;fs&#x27;);

const { WebCache, VersionResolveError } &#x3D; require(&#x27;./WebCache&#x27;);

/**
 * LocalWebCache - Fetches a WhatsApp Web version from a local file store
 * @param {object} options - options
 * @param {string} options.path - Path to the directory where cached versions are saved, default is: &quot;./.wwebjs_cache/&quot; 
 * @param {boolean} options.strict - If true, will throw an error if the requested version can&#x27;t be fetched. If false, will resolve to the latest version.
 */
class LocalWebCache extends WebCache {
    constructor(options &#x3D; {}) {
        super();

        this.path &#x3D; options.path || &#x27;./.wwebjs_cache/&#x27;;
        this.strict &#x3D; options.strict || false;
    }

    async resolve(version) {
        const filePath &#x3D; path.join(this.path, &#x60;${version}.html&#x60;);
        
        try {
            return fs.readFileSync(filePath, &#x27;utf-8&#x27;);
        }
        catch (err) {
            if (this.strict) throw new VersionResolveError(&#x60;Couldn&#x27;t load version ${version} from the cache&#x60;);
            return null;
        }
    }

    async persist(indexHtml, version) {
        // version &#x3D; (version+&#x27;&#x27;).replace(/[^0-9.]/g,&#x27;&#x27;);
        const filePath &#x3D; path.join(this.path, &#x60;${version}.html&#x60;);
        fs.mkdirSync(this.path, { recursive: true });
        fs.writeFileSync(filePath, indexHtml);
    }
}

module.exports &#x3D; LocalWebCache;
</code></pre>
          </article>
        </div>
      </div>
      <nav id="jsdoc-toc-nav" role="navigation"></nav>
    </div>
  </div>
  <footer id="jsdoc-footer" class="jsdoc-footer">
    <div id="jsdoc-footer-container">
      <p>
        Generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> 3.6.11 on November 22, 2024.
      </p>
    </div>
  </footer>
  <script src="scripts/jquery.min.js"></script>
  <script src="scripts/tree.jquery.js"></script>
  <script src="scripts/prettify.js"></script>
  <script src="scripts/jsdoc-toc.js"></script>
  <script src="scripts/linenumber.js"></script>
  <script src="scripts/scrollanchor.js"></script>
</body>

</html>